Networks of computers are important for the transmission of data, both on a local basis, such as a LAN (local area network) for example, and on a global basis, such as the Internet. A network may have several servers, for providing data to client computers through the client-server model of data transmissions. In order to evenly distribute the load among these different servers, a load balancer is often employed. One example of such a load balancer is described in U.S. Pat. No. 5,774,660 which is incorporated herein by reference. The load balancer is a server which distributes the load by determining which server should receive a particular data transmission. The goal of the load balancer is to ensure that the most efficient distribution is maintained, in order to prevent a situation, for example, in which one server is idle while another server is suffering from degraded performance because of an excessive load.
One difficulty with maintaining an even balance between these different servers is that once a session has begun between a client and a particular server, the session must be continued with that server. The load balancer therefore maintains a session table, or a list of the sessions in which each server is currently engaged, in order for these sessions to be maintained with that particular server, even if that server currently has a higher load than other servers.
Referring now to FIG. 1, which shows a system 10 known in the art for distributing a load across several servers 12. Each server 12 is in communication with a load balancer 14, which is a computer server for receiving a number of user requests 16 from different clients across a network 18. As shown in FIG. 1, load balancer 14 selects a particular server 12 which has a relatively light load, and is labeled “free”. The remaining servers 12 are labeled “busy”, to indicate that these servers 12 are less able to receive the load. The load balancer 14 then causes the “free” server 12 to receive the user request, such that a new session is now added to the load on that particular server 12.
The load balancer 14 shown in FIG. 1 maintains a session table, in order to determine which sessions must be continued with a particular server 12, as well as to determine the current load on each server 12. The load balancer 14 must also use the determination of the current load on each server 12 in order to assign new sessions, and therefore feedback is required from each of the servers 12, as shown in FIG. 1. Clearly, the known system 10 shown in FIG. 1 has many drawbacks.
Many different rules and algorithms have been developed in order to facilitate the even distribution of the load by the load balancer. Examples of these rules and algorithms include determining load according to server responsiveness and/or total workload; and the use of a “round robin” distribution system, such that each new session is systematically assigned to a server, for example according to a predetermined order.
Unfortunately, all of these rules and algorithms have a number of drawbacks. First, the load balancer must maintain a session table. Second, feedback must be received by the load balancer from the server, both in order to determine the current load on that server and in order for the load balancer to maintain the session table. Third, each of these rules and algorithms is, in some sense, reactive to the current conditions of data transmission and data load. It is an object of the present invention to solve these and other disadvantages attendant with known load balancers.
There is therefore a need for, and it would be useful to have, a system and a method for load balancing among several servers on a network, in which feedback from the servers would optionally not be required, and in which the distributing of the load would not be dictated by the currently existing load conditions.